package com.continautos.common.web;

import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import com.continautos.common.enums.ETipoUsuario;
import com.continautos.common.persistence.dto.CtaTbCliente;
import com.continautos.common.persistence.dto.CtaTbIngresoCliente;
import com.continautos.common.persistence.dto.CtaTbUsuario;
import com.continautos.common.persistence.exceptions.CtaTbUsuarioDaoException;


@ManagedBean(name = "userSessionBean")
@SessionScoped
public class UserSessionBean implements Serializable{

	private static final long serialVersionUID = 1L;

	private boolean login;
	
	private CtaTbUsuario usuario;
	private Map<String,Boolean> permisos = new HashMap<String, Boolean>();
	
	ETipoUsuario tipoUsuario;
	private String tipoUsuarioText="";
	
	private int idConcesionario;

	private CtaTbIngresoCliente ingresoClienteActual;
	private CtaTbCliente clienteActual;
	private String mensajeNotificacion;
	
	
	
	private String nombreIngresado;
	private String apellidoIngresado;
	private String telefonoIngresado;
	private String direccionIngresado;
	
	
	public UserSessionBean() throws CtaTbUsuarioDaoException{
		
		//filas = GamTbPgDaoFactory.create().retornoDinamico();
		
		//DAOFactory.getGamTbPgDao().insert(pg);
		
	}
	
	
	/**
	 * @return the login
	 */
	public boolean isLogin() {
		return login;
	}

	/**
	 * @param login the login to set
	 */
	public void setLogin(boolean login) {
		this.login = login;
	}


	
	public void addPermiso(String key,Boolean valor){
	
		permisos.put(key, valor);
		
	}
	
	/*public boolean tienePermiso(String permiso) {
        boolean retorno = false;
        
        for (String permission : permisos) {
        	
            if (permission.equalsIgnoreCase(permiso)) {
                retorno = true;
                break;
            }
        }

        return retorno;
    }*/

	/**
	 * @return the usuario
	 */
	public CtaTbUsuario getUsuario() {
		return usuario;
	}

	/**
	 * @param usuario the usuario to set
	 */
	public void setUsuario(CtaTbUsuario usuario) {
		this.usuario = usuario;
	}



	public ETipoUsuario getTipoUsuario() {
		return tipoUsuario;
	}



	public void setTipoUsuario(ETipoUsuario tipoUsuario) {
		this.tipoUsuario = tipoUsuario;
	}


	public Map<String, Boolean> getPermisos() {
		return permisos;
	}



	public void setPermisos(Map<String, Boolean> permisos) {
		this.permisos = permisos;
	}



	public String getTipoUsuarioText() {
		return tipoUsuarioText;
	}



	public void setTipoUsuarioText(String tipoUsuarioText) {
		this.tipoUsuarioText = tipoUsuarioText;
	}


	public CtaTbIngresoCliente getIngresoClienteActual() {
		return ingresoClienteActual;
	}


	public void setIngresoClienteActual(CtaTbIngresoCliente ingresoClienteActual) {
		this.ingresoClienteActual = ingresoClienteActual;
	}


	public int getIdConcesionario() {
		return idConcesionario;
	}


	public void setIdConcesionario(int idConcesionario) {
		this.idConcesionario = idConcesionario;
	}


	public CtaTbCliente getClienteActual() {
		return clienteActual;
	}


	public void setClienteActual(CtaTbCliente clienteActual) {
		this.clienteActual = clienteActual;
	}


	public String getMensajeNotificacion() {
		return mensajeNotificacion;
	}


	public void setMensajeNotificacion(String mensajeNotificacion) {
		this.mensajeNotificacion = mensajeNotificacion;
	}


	public String getNombreIngresado() {
		return nombreIngresado;
	}


	public void setNombreIngresado(String nombreIngresado) {
		this.nombreIngresado = nombreIngresado;
	}


	public String getApellidoIngresado() {
		return apellidoIngresado;
	}


	public void setApellidoIngresado(String apellidoIngresado) {
		this.apellidoIngresado = apellidoIngresado;
	}


	public String getTelefonoIngresado() {
		return telefonoIngresado;
	}


	public void setTelefonoIngresado(String telefonoIngresado) {
		this.telefonoIngresado = telefonoIngresado;
	}


	public String getDireccionIngresado() {
		return direccionIngresado;
	}


	public void setDireccionIngresado(String direccionIngresado) {
		this.direccionIngresado = direccionIngresado;
	}

}
